var ws = require("nodejs-websocket");
const mysql = require("mysql");

const con = mysql.createConnection({
    host: "localhost",
    // 端口号
    port: "3306",
    // 用户名
    user: "root",
    // 密码
    password: "root",
    // 数据库名
    database: "one",
});

// 封装query函数
const query = (sql) => {
    return new Promise((resolve, reject) => {
        con.query(sql, (error, data) => {
            if (error) reject(error);
            resolve(data);
        });
    });
};

setTimeout(() => {
    query(`select * from login`);
}, 6000);

var server = ws
    .createServer(function(socket) {
        // 事件名称为text(读取字符串时，就叫做text)，读取客户端传来的字符串
        socket.on("text", async function(str) {
            let { userId, brokerId, value, identity } = JSON.parse(str);
            console.log(userId, brokerId, value, identity);
            /* 存入 拿到前端发来的数据 要把谁说的话 这两个字段 一个身份 一个说的什么话 存到 我动态创建的表中
                  再把存入动态表中的信息 读取 然后 拿到data  */
            let biao =
                identity == "普通用户" ?
                userId + "or" + brokerId :
                brokerId + "or" + userId;

            console.log(biao);
            await query(
                `insert into ${biao}(usernews,identity) values("${value}","${identity}") `
            );
            // 查找数据 并返回
            const data = await query(`select * from ${biao}`);

            // server.connections 所有连接到我聊天服务器的人 是一个数组
            server.connections.forEach((item) => {
                // sendText 返回给客户端数据的方法 类似于send  用emit也行
                item.sendText(JSON.stringify(data));
            });
            // socket.emit());
        });
    })
    .listen(3000);